/*
 * @Author: 一路向阳 tt_sunzhenfeng@163.com
 * @Date: 2024-02-22 15:52:45
 * @LastEditors: 一路向阳 tt_sunzhenfeng@163.com
 * @LastEditTime: 2024-02-22 21:54:15
 * @FilePath: \utils_ts\24.工具类型.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
export {};

interface PItf {
  name: string;
  age: number;
  height?: number;
}

type Partial<T> = { [P in keyof T]?: T[P] | undefined; }

/**
 * keyof T  name | age
 * {
 *   name?: string | undefined,
 *   age?: number | undefined
 * }
 * 
 * for(key in 对象)
 * Partial 部分的
 * 
 */
// 作用： 把<>里面这个接口类型的属性设置为可缺省的属性
const obj: Partial<PItf> = {
  name: '',
  age: undefined
}

type Required<T> = { [P in keyof T]-?: T[P]; }

/**
 * keyof T  name | age | height
 * -? 抵消去掉这个?
 * {
 *   name?: string,
 *   age?: number,
 *   height?: number
 * }
 * 
 * for(key in 对象)
 * Partial 部分的
 * 
 */
// 作用：把<>里面这个接口类型的属性设置为不可缺省的属性
const obj1: Required<PItf> = {
  name: '',
  age: 12,
  height: 1.80
}